﻿
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Data.Sql;
using System.Data;
using ICE.Vacations.Datos;
using ICE.Vacations.Datos.FileManager;
using ICE.Vacations.Entidades;
namespace ICE.Vacations.Datos.SQL_Manager
{
    public static class SQLDataClass
    {
        private static SqlConnection sqlConnection;

        public static void OpenConnection()
        {
            try
            {
                Logger.fileWrite("Intentando conectarse al servidor: " + Config.SQL_Server, Logger.MessageType.Information);
                string h = "Server="+Config.SQL_Server+";Database="+Config.SQL_DataBase+";User Id="+Config.SQL_User+";Password="+Config.SQL_Password+";";

                // string h = "Server=" + Config.SQL_Server + ";Database=" + Config.SQL_DataBase + ";User Id=" + Config.SQL_User + ";Password=" + Config.SQL_Password + ";";
                Logger.fileWrite(h, Logger.MessageType.Information);

                sqlConnection = new SqlConnection(h);

                sqlConnection.Open();
                Logger.fileWrite("Conexion establecida con el servidor " + Config.SQL_Server, Logger.MessageType.Information);


            }
            catch (SqlException sqlExc)
            {
                throw (sqlExc);
            }
        }

        public static string getConsecutivo()
        {           
                OpenConnection();
                SqlCommand sqlCommand = new SqlCommand();

                sqlCommand.Connection = sqlConnection;
                sqlCommand.CommandType = CommandType.StoredProcedure;
                sqlCommand.CommandText = "spVac_consecutivoVacaciones";

                Logger.fileWrite("Ejecunto Store Procedure [" + sqlCommand.CommandText + "]...", Logger.MessageType.Information);
                // sqlCommand.ExecuteReader(CommandBehavior.CloseConnection); //retorna el resultado del store procedure 

                SqlDataReader reader = sqlCommand.ExecuteReader(CommandBehavior.CloseConnection); //retorna el resultado del store procedure 
                Logger.fileWrite("Store Procedure ejecutado satisfactoriamente", Logger.MessageType.Information);

                if (reader.HasRows)
                {
                    reader.Read();
                    Logger.fileWrite("Obteniendo resultado del store procedure...", Logger.MessageType.Information);
                    string result = "";
                    try
                    {
                        result = reader.GetString(0);
                    }
                    catch
                    {
                        CloseConnection();
                        return "";
                    }
                    Logger.fileWrite("Resultado obtenido [" + result + "].", Logger.MessageType.Information);
                    CloseConnection();

                    return result;
                }

                else
                {
                    Logger.fileWrite("Resultado obtenido [" + reader.HasRows + "].", Logger.MessageType.Information);


                    return "";
                }
        }

        public static void CloseConnection()
        {
            try
            {
                Logger.fileWrite("Intentado cerrar la conexión con Servidor [" + Config.SQL_Server + "].", Logger.MessageType.Information);
                sqlConnection.Close();
                sqlConnection.Dispose();
                Logger.fileWrite("Conexión al servidor [" + Config.SQL_Server + "] cerrada satisfactoriamente.", Logger.MessageType.Information);
            }
            catch (SqlException sqlExc)
            {
                throw (sqlExc);
            }
        }

        /*Modificar*/
        public static int diasFeriados(DateTime inicio, DateTime fin)
        {

            OpenConnection();
            SqlCommand sqlCommand = new SqlCommand();
            sqlCommand.Connection = sqlConnection;
            sqlCommand.CommandType = CommandType.StoredProcedure;
            sqlCommand.CommandText = "spVac_rangoDiasDisponibles";

            SqlParameter parametro = new SqlParameter("@FIni", SqlDbType.VarChar);
            parametro.Direction = ParameterDirection.Input;
            string x = inicio.ToString("dd/MM/yyyy");
            parametro.Value = inicio.ToString("dd/MM/yyyy");


            sqlCommand.Parameters.Add(parametro);

            parametro = new SqlParameter("@FFin", SqlDbType.VarChar);
            parametro.Direction = ParameterDirection.Input;
            x = fin.ToString("dd/MM/yyyy");
            parametro.Value = fin.ToString("dd/MM/yyyy");


            sqlCommand.Parameters.Add(parametro);

            SqlDataReader reader = sqlCommand.ExecuteReader();
            int total = 0;
            DiasLaborales availableDays = Datos.FileManager.EntityToFile.Deserialize<DiasLaborales>(Config.weekDays);
            if (reader.HasRows)
            {
                while(reader.Read()){
                    DateTime feriado = DateTime.ParseExact(reader.GetValue(reader.GetOrdinal("DIAS")).ToString(),"dd/MM/yyyy",null);
                    switch (feriado.DayOfWeek)
                    {
                        case DayOfWeek.Monday:
                            {
                                if (availableDays.monday)
                                    total++;
                            } break;
                        case DayOfWeek.Tuesday:
                            {
                                if (availableDays.tuesday)
                                    total++;
                            } break;

                        case DayOfWeek.Wednesday:
                            {
                                if (availableDays.wednesday)
                                    total++;
                            } break;

                        case DayOfWeek.Thursday:
                            {
                                if (availableDays.thursday)
                                    total++;
                            } break;

                        case DayOfWeek.Friday:
                            {
                                if (availableDays.friday)
                                    total++;
                            } break;

                        case DayOfWeek.Saturday:
                            {
                                if (availableDays.saturday)
                                    total++;
                            } break;

                        case DayOfWeek.Sunday:
                            {
                                if (availableDays.sunday)
                                    total++;
                            } break;

                    }
                }
                    CloseConnection();
                    return total;                
                
            }
            else
            {
                CloseConnection();
                return 0;
            }

           
        }

        public static bool UPDATE_State_Solicitud(string requestID, string state)
        {

                OpenConnection();
                SqlCommand sqlCommand = new SqlCommand();

                sqlCommand.Connection = sqlConnection;
                sqlCommand.CommandType = CommandType.StoredProcedure;
                sqlCommand.CommandText = "spVac_actualizaEstado";


                SqlParameter parameter = new SqlParameter("@IDSOLICITUD", SqlDbType.VarChar);
                parameter.Direction = ParameterDirection.Input;
                parameter.Value = requestID;

                sqlCommand.Parameters.Add(parameter);

                parameter= new SqlParameter("@ESTADO_SOLICITUD", SqlDbType.VarChar);
                parameter.Direction = ParameterDirection.Input;
                parameter.Value = state;

                sqlCommand.Parameters.Add(parameter);

                int result = sqlCommand.ExecuteNonQuery();
                
                CloseConnection();
                
                if (result > 0)
                    return true;
                else
                    return false;            
        }

        public static bool UPDATE_State_Solicitud(string requestID, string state,string aprobador)
        {

            OpenConnection();
            SqlCommand sqlCommand = new SqlCommand();

            sqlCommand.Connection = sqlConnection;
            sqlCommand.CommandType = CommandType.StoredProcedure;
            sqlCommand.CommandText = "spVac_actualizaEstadoAprobadorREQ";


            SqlParameter parameter = new SqlParameter("@IDSOLICITUD", SqlDbType.VarChar);
            parameter.Direction = ParameterDirection.Input;
            parameter.Value = requestID;

            sqlCommand.Parameters.Add(parameter);

            parameter = new SqlParameter("@APROBADOR_REQ", SqlDbType.VarChar);
            parameter.Direction = ParameterDirection.Input;
            parameter.Value = aprobador ;

            sqlCommand.Parameters.Add(parameter);

            parameter = new SqlParameter("@ESTADO_SOLICITUD", SqlDbType.VarChar);
            parameter.Direction = ParameterDirection.Input;
            parameter.Value = state;

            sqlCommand.Parameters.Add(parameter);

            int result = sqlCommand.ExecuteNonQuery();

            CloseConnection();

            if (result > 0)
                return true;
            else
                return false;
        }
 

        public static string SQLInsertSolicitud(Entidades.Solicitud solicitud)
        {

            
                OpenConnection();

                SqlCommand sqlCommand = new SqlCommand();

                sqlCommand.Connection = sqlConnection;
                sqlCommand.CommandType = CommandType.StoredProcedure;
                sqlCommand.CommandText = "spVac_Insertar_Solicitud";

                string id = getConsecutivo();

                Logger.fileWrite("Insertando @sid: [" + solicitud.username + "]", Logger.MessageType.Information);
                SqlParameter parametro = new SqlParameter("@id", SqlDbType.VarChar);
                parametro.Direction = ParameterDirection.Input;
                parametro.Value = id;
                sqlCommand.Parameters.Add(parametro);

                Logger.fileWrite("Insertando @sUSUARIO: [" + solicitud.username + "]", Logger.MessageType.Information);
                parametro = new SqlParameter("@sUSUARIO", SqlDbType.VarChar);
                parametro.Direction = ParameterDirection.Input;
                parametro.Value = solicitud.username;
                sqlCommand.Parameters.Add(parametro);

                Logger.fileWrite("Insertando @sEMPLEADO: [" + solicitud.employeeID + "]", Logger.MessageType.Information);
                parametro = new SqlParameter("@sEMPLEADO", SqlDbType.VarChar);
                parametro.Direction = ParameterDirection.Input;
                parametro.Value = solicitud.employeeID;
                sqlCommand.Parameters.Add(parametro);

                Logger.fileWrite(" Insertando @sTDIASDISPONIBLES: [" + solicitud.diasDisponibles + "]", Logger.MessageType.Information);
                parametro = new SqlParameter("@sTDIASDISPONIBLES", SqlDbType.VarChar);
                parametro.Direction = ParameterDirection.Input;
                parametro.Value = solicitud.diasDisponibles.ToString();
                sqlCommand.Parameters.Add(parametro);

                Logger.fileWrite("Insertando @sTDIASSOLICITADOS: [" + solicitud.diasSolicitados + "]", Logger.MessageType.Information);
                parametro = new SqlParameter("@sTDIASSOLICITADOS", SqlDbType.VarChar);
                parametro.Direction = ParameterDirection.Input;
                parametro.Value = solicitud.diasSolicitados.ToString();
                sqlCommand.Parameters.Add(parametro);

                Logger.fileWrite("Insertando @sFECHA_INICIO: [" + solicitud.fechaInicio.ToString() + "]", Logger.MessageType.Information);
                parametro = new SqlParameter("@sFECHA_INICIO", SqlDbType.VarChar);
                parametro.Direction = ParameterDirection.Input;
                parametro.Value = solicitud.fechaInicio.ToString("dd/MM/yyyy");
                sqlCommand.Parameters.Add(parametro);

                Logger.fileWrite("Insertando @sFECHA_FIN: [" + solicitud.fechaFin.ToString() + "]", Logger.MessageType.Information);
                parametro = new SqlParameter("@sFECHA_FIN", SqlDbType.VarChar);
                parametro.Direction = ParameterDirection.Input;
                parametro.Value = solicitud.fechaFin.ToString("dd/MM/yyyy");
                sqlCommand.Parameters.Add(parametro);
                // ******** DateTime.Now.ToString("dd/MM/yyyy") 
                Logger.fileWrite("Insertando @sFECHA_REGISTRO: [" + solicitud.fechaRegistro.ToString() + "]", Logger.MessageType.Information);
                parametro = new SqlParameter("@sFECHA_REGISTRO", SqlDbType.VarChar);
                parametro.Direction = ParameterDirection.Input;
                parametro.Value = solicitud.fechaRegistro.ToString("dd/MM/yyyy");
                sqlCommand.Parameters.Add(parametro);

                Logger.fileWrite("Insertando @sESTADO_SOLICITUD: [" + solicitud.estado + "]", Logger.MessageType.Information);
                parametro = new SqlParameter("@sESTADO_SOLICITUD", SqlDbType.VarChar);
                parametro.Direction = ParameterDirection.Input;
                parametro.Value = solicitud.estado.ToString();
                sqlCommand.Parameters.Add(parametro);

                Logger.fileWrite("Insertando @WORKITEM: [" + solicitud.objectID + "]", Logger.MessageType.Information);
                parametro = new SqlParameter("@WORKITEM", SqlDbType.VarChar);
                parametro.Direction = ParameterDirection.Input;
                parametro.Value = solicitud.objectID.ToString();
                sqlCommand.Parameters.Add(parametro);


                Logger.fileWrite("Insertando @APROBADOR_REQ: [" + solicitud.objectID + "]", Logger.MessageType.Information);
                parametro = new SqlParameter("@APROBADOR_REQ", SqlDbType.VarChar);
                parametro.Direction = ParameterDirection.Input;
                parametro.Value = "NULL";
                sqlCommand.Parameters.Add(parametro);

                
                    int r = sqlCommand.ExecuteNonQuery();
                
                //if(r<1)
                //{
                CloseConnection();
                //  throw new Exception("Error Inesperado al insertar la solicitud.");
                //}


                return id;
           
            
        }

        public static void SQLInsertHistorico(Entidades.Historico historico)
        {

            // if (openConnection)
            OpenConnection();

            SqlCommand sqlCommand = new SqlCommand();

            sqlCommand.Connection = sqlConnection;
            sqlCommand.CommandType = CommandType.StoredProcedure;
            sqlCommand.CommandText = "spVac_insertarHistorico";



            Logger.fileWrite("Insertando @IDSOLICITUD: [" + historico.idSolicitud+ "]", Logger.MessageType.Information);
            SqlParameter parametro = new SqlParameter("@IDSOLICITUD", SqlDbType.VarChar);
            parametro.Direction = ParameterDirection.Input;
            parametro.Value = historico.idSolicitud;
            sqlCommand.Parameters.Add(parametro);

            Logger.fileWrite("Insertando @TIPO_TRANSACCION: [" + historico.tipoTransaccion + "]", Logger.MessageType.Information);
             parametro = new SqlParameter("@TIPO_TRANSACCION", SqlDbType.VarChar);
            parametro.Direction = ParameterDirection.Input;
            parametro.Value = historico.tipoTransaccion;
            sqlCommand.Parameters.Add(parametro);

            Logger.fileWrite("Insertando @USUARIO: [" + historico.usuario + "]", Logger.MessageType.Information);
            parametro = new SqlParameter("@USUARIO", SqlDbType.VarChar);
            parametro.Direction = ParameterDirection.Input;
            parametro.Value = historico.usuario;
            sqlCommand.Parameters.Add(parametro);

            Logger.fileWrite("Insertando @EMPLEADO: [" + historico.empleado + "]", Logger.MessageType.Information);
            parametro = new SqlParameter("@EMPLEADO", SqlDbType.VarChar);
            parametro.Direction = ParameterDirection.Input;
            parametro.Value = historico.empleado;
            sqlCommand.Parameters.Add(parametro);

            Logger.fileWrite("Insertando @NOTIFICADO: [" + historico.notificado + "]", Logger.MessageType.Information);
            parametro = new SqlParameter("@NOTIFICADO", SqlDbType.VarChar);
            parametro.Direction = ParameterDirection.Input;
            parametro.Value = historico.notificado;
            sqlCommand.Parameters.Add(parametro);

            Logger.fileWrite("Insertando @ESTADO_SOLICITUD: [" + historico.estadoSolicitud + "]", Logger.MessageType.Information);
            parametro = new SqlParameter("@ESTADO_SOLICITUD", SqlDbType.VarChar);
            parametro.Direction = ParameterDirection.Input;
            parametro.Value = historico.estadoSolicitud;
            sqlCommand.Parameters.Add(parametro);


            Logger.fileWrite("Insertando @COMENTARIO: [" + historico.comentario + "]", Logger.MessageType.Information);
            parametro = new SqlParameter("@COMENTARIO", SqlDbType.VarChar);
            parametro.Direction = ParameterDirection.Input;
            parametro.Value = historico.comentario;
            sqlCommand.Parameters.Add(parametro);

            Logger.fileWrite("Insertando @CONSULTA_RRHH: [" + historico.consultaRRHH + "]", Logger.MessageType.Information);
            parametro = new SqlParameter("@CONSULTA_RRHH", SqlDbType.VarChar);
            parametro.Direction = ParameterDirection.Input;
            parametro.Value = historico.consultaRRHH;
            sqlCommand.Parameters.Add(parametro);

         

            Logger.fileWrite("Insertando @PDF: [" + historico.pdf + "]", Logger.MessageType.Information);
            parametro = new SqlParameter("@PDF", SqlDbType.VarChar);
            parametro.Direction = ParameterDirection.Input;
            parametro.Value = historico.pdf;
            sqlCommand.Parameters.Add(parametro);

            Logger.fileWrite("Insertando @ESTACION: [" + historico.estacionIP + "]", Logger.MessageType.Information);
            parametro = new SqlParameter("@ESTACION", SqlDbType.VarChar);
            parametro.Direction = ParameterDirection.Input;
            parametro.Value = historico.estacionIP;


            sqlCommand.Parameters.Add(parametro);
            int r = sqlCommand.ExecuteNonQuery();
            //if(r<1)
            //{
            CloseConnection();
            //  throw new Exception("Error Inesperado al insertar la solicitud.");
            //}


           


        }









        public static int TotalAprovees(string employeeID)
        {
            
                OpenConnection();
                SqlCommand sqlCommand = new SqlCommand();
                sqlCommand.Connection = sqlConnection;
                sqlCommand.CommandType = CommandType.StoredProcedure;
                sqlCommand.CommandText = "spVac_totalAprobadores";


                SqlParameter parameter = sqlCommand.Parameters.Add("@sCEDULA", SqlDbType.VarChar);
                parameter.Direction = ParameterDirection.Input;
                parameter.Value = employeeID;

                SqlDataReader reader = sqlCommand.ExecuteReader(); //retorna el resultado del store procedure   
                if (reader.HasRows)
                {
                    reader.Read();
                    int r = 0;
                    try
                    {
                           r=Convert.ToInt32(reader.GetSqlValue(0).ToString());
                           CloseConnection();
                           return r;
                    }
                    catch
                    {
                        return 0;
                    }
                }
                else { return 0; }

           
        }

      
       
        //*********************ULTIMA MODIFICADA*********************************
        public static List<Solicitud> SearchByBoss(string bossID,string campo,string valor,string nombre="" )
        {
           
                OpenConnection();
                SqlCommand sqlCommand = new SqlCommand();
                sqlCommand.Connection = sqlConnection;
                sqlCommand.CommandType = CommandType.StoredProcedure;
                if(nombre.Equals(""))
                    sqlCommand.CommandText = "spVac_BuscarPorAprobadorLike";
                else
                    sqlCommand.CommandText = "spVac_BuscarPorAprobadorLikeNombre";



                SqlParameter parameter = new SqlParameter("@BOSSID", SqlDbType.VarChar);
                parameter.Direction = ParameterDirection.Input;
                parameter.Value = bossID;
                sqlCommand.Parameters.Add(parameter);

                if (nombre.Equals(""))
                {
                    parameter = new SqlParameter("@sCampo", SqlDbType.VarChar);
                    parameter.Direction = ParameterDirection.Input;
                    parameter.Value = campo;
                    sqlCommand.Parameters.Add(parameter);
                }

                parameter = new SqlParameter("@sValor", SqlDbType.VarChar);
                parameter.Direction = ParameterDirection.Input;
                if (nombre.Equals(""))
                    parameter.Value = valor;
                else
                    parameter.Value = nombre;
                sqlCommand.Parameters.Add(parameter);

                SqlDataReader reader = sqlCommand.ExecuteReader(); //retorna el resultado del store procedure   
                if (reader.HasRows)
                {
                    List<Entidades.Solicitud> lista = new List<Solicitud>();
                    while (reader.Read())
                    {
                        Entidades.Solicitud solicitud = new Solicitud();

                        solicitud.requestID = reader.GetValue(reader.GetOrdinal("IDSOLICITUD")).ToString();

                        if (solicitud.requestID.ToUpper().Equals("NULL"))
                            solicitud.requestID = "";


                        solicitud.username = reader.GetValue(reader.GetOrdinal("NOMEMPLEADO")).ToString();
                        if (solicitud.username.ToUpper().Equals("NULL"))
                            solicitud.username = "";


                        solicitud.employeeID = reader.GetValue(reader.GetOrdinal("EMPLEADO")).ToString();
                        if (solicitud.employeeID.ToUpper().Equals("NULL"))
                            solicitud.employeeID = "";

                        try
                        {
                            solicitud.diasDisponibles = Convert.ToInt32(reader.GetValue(reader.GetOrdinal("TDIASDISPONIBLES")).ToString());
                        }
                        catch { solicitud.diasDisponibles = 0; }

                        try
                        {
                            solicitud.diasSolicitados = Convert.ToInt32(reader.GetValue(reader.GetOrdinal("TDIASSOLICITADOS")).ToString());
                        }
                        catch { solicitud.diasSolicitados = 0; }

                        try
                        {
                            solicitud.fechaInicio = Convert.ToDateTime(reader.GetValue(reader.GetOrdinal("FECHA_INICIO")).ToString());
                        }
                        catch
                        {
                            solicitud.fechaInicio = DateTime.Now; 
                        }

                        try
                        {
                            solicitud.fechaFin = Convert.ToDateTime(reader.GetValue(reader.GetOrdinal("FECHA_FIN")).ToString());
                        }
                        catch
                        {
                            solicitud.fechaFin = DateTime.Now;
                        }

                        try
                        {
                            solicitud.fechaRegistro = Convert.ToDateTime(reader.GetValue(reader.GetOrdinal("FECHA_REGISTRO")).ToString());
                        }
                        catch
                        {
                            solicitud.fechaRegistro = DateTime.Now;
                        }

                        try
                        {
                            solicitud.fechaWFL = Convert.ToDateTime(reader.GetValue(reader.GetOrdinal("FECHA_ENVIO_WF")).ToString());
                        }
                        catch
                        {
                            solicitud.fechaWFL = DateTime.Now;
                        }

                        solicitud.estado = reader.GetValue(reader.GetOrdinal("ESTADO_SOLICITUD")).ToString();
                        if (solicitud.estado.ToUpper().Equals("NULL"))
                            solicitud.estado = "";
                        if (solicitud.estado.ToUpper().Equals("A"))
                            solicitud.estado = "Aprobada";
                        if (solicitud.estado.ToUpper().Equals("P"))
                            solicitud.estado = "Pendiente";
                        if (solicitud.estado.ToUpper().Equals("D"))
                            solicitud.estado = "Denegada";

                        if (solicitud.estado.ToUpper().Equals("R"))
                            solicitud.estado = "Rechazada";

                        if (solicitud.estado.ToUpper().Equals("S"))
                            solicitud.estado = "Salvada";

                        if (solicitud.estado.ToUpper().Equals("C"))
                            solicitud.estado = "Cancelada";

                        if (solicitud.estado.ToUpper().Equals("E"))
                            solicitud.estado = "Expirada";

                        solicitud.objectID = reader.GetValue(reader.GetOrdinal("WORKITEM")).ToString();
                        if (solicitud.objectID.ToUpper().Equals("NULL"))
                            solicitud.objectID = "";

                        lista.Add(solicitud);

                    }
                    CloseConnection();
                    return lista;
                }
                else
                {
                    CloseConnection();
                    return new List<Solicitud>();
                }
          
            //throw new System.NotImplementedException();
        }

        public static List<Solicitud> SearchByBoss(string bossID)
        {
           
                OpenConnection();
                SqlCommand sqlCommand = new SqlCommand();
                sqlCommand.Connection = sqlConnection;
                sqlCommand.CommandType = CommandType.StoredProcedure;
                sqlCommand.CommandText = "spVac_BuscarPorAprobador";


                SqlParameter parameter = new SqlParameter("@BOSSID", SqlDbType.VarChar);
                parameter.Direction = ParameterDirection.Input;
                parameter.Value = bossID;
                sqlCommand.Parameters.Add(parameter);                

                SqlDataReader reader = sqlCommand.ExecuteReader(); //retorna el resultado del store procedure   
                if (reader.HasRows)
                {
                    List<Entidades.Solicitud> lista = new List<Solicitud>();
                    while (reader.Read())
                    {
                        Entidades.Solicitud solicitud = new Solicitud();

                        solicitud.requestID = reader.GetValue(reader.GetOrdinal("IDSOLICITUD")).ToString();

                        if (solicitud.requestID.ToUpper().Equals("NULL"))
                            solicitud.requestID = "";


                        solicitud.username = reader.GetValue(reader.GetOrdinal("NOMEMPLEADO")).ToString();
                        if (solicitud.username.ToUpper().Equals("NULL"))
                            solicitud.username = "";



                        solicitud.employeeID = reader.GetValue(reader.GetOrdinal("EMPLEADO")).ToString();
                        if (solicitud.employeeID.ToUpper().Equals("NULL"))
                            solicitud.employeeID = "";

                        try
                        {
                            solicitud.diasDisponibles = Convert.ToInt32(reader.GetValue(reader.GetOrdinal("TDIASDISPONIBLES")).ToString());
                        }
                        catch { solicitud.diasDisponibles = 0; }

                        try
                        {
                            solicitud.diasSolicitados = Convert.ToInt32(reader.GetValue(reader.GetOrdinal("TDIASSOLICITADOS")).ToString());
                        }
                        catch { solicitud.diasSolicitados = 0; }

                        try
                        {
                            solicitud.fechaInicio = Convert.ToDateTime(reader.GetValue(reader.GetOrdinal("FECHA_INICIO")).ToString());
                        }
                        catch
                        {
                            solicitud.fechaInicio = DateTime.Now;
                        }

                        try
                        {
                            solicitud.fechaFin = Convert.ToDateTime(reader.GetValue(reader.GetOrdinal("FECHA_FIN")).ToString());
                        }
                        catch
                        {
                            solicitud.fechaFin = DateTime.Now;
                        }

                        try
                        {
                            solicitud.fechaRegistro = Convert.ToDateTime(reader.GetValue(reader.GetOrdinal("FECHA_REGISTRO")).ToString());
                        }
                        catch
                        {
                            solicitud.fechaRegistro = DateTime.Now;
                        }

                        try
                        {
                            solicitud.fechaWFL = Convert.ToDateTime(reader.GetValue(reader.GetOrdinal("FECHA_ENVIO_WF")).ToString());
                        }
                        catch
                        {
                            solicitud.fechaWFL = DateTime.Now;
                        }

                        solicitud.estado = reader.GetValue(reader.GetOrdinal("ESTADO_SOLICITUD")).ToString();
                        if (solicitud.estado.ToUpper().Equals("NULL"))
                            solicitud.estado = "";
                        if (solicitud.estado.ToUpper().Equals("A"))
                            solicitud.estado = "Aprobada";
                        if (solicitud.estado.ToUpper().Equals("P"))
                            solicitud.estado = "Pendiente";
                        if (solicitud.estado.ToUpper().Equals("D"))
                            solicitud.estado = "Denegada";

                        if (solicitud.estado.ToUpper().Equals("R"))
                            solicitud.estado = "Rechazada";

                        if (solicitud.estado.ToUpper().Equals("S"))
                            solicitud.estado = "Salvada";

                        if (solicitud.estado.ToUpper().Equals("C"))
                            solicitud.estado = "Cancelada";

                        if (solicitud.estado.ToUpper().Equals("E"))
                            solicitud.estado = "Expirada";

                        solicitud.objectID = reader.GetValue(reader.GetOrdinal("WORKITEM")).ToString();
                        if (solicitud.objectID.ToUpper().Equals("NULL"))
                            solicitud.objectID = "";

                        lista.Add(solicitud);

                    }
                    CloseConnection();
                    return lista;
                }
                else
                {
                    CloseConnection();
                    return new List<Solicitud>();
                }
            
            //throw new System.NotImplementedException();
        }


        /*certificar*/
         //SE agregaron updatesolicitud entidades.solicitud, "delect", dos consultar uno que resiva el ID y retorna entidades.solicitud
        //un consultar que no resive parametros y resive una lista de solicitudes
        public static bool updateSolicitud(Entidades.Solicitud solicitud) {
            OpenConnection();
            SqlCommand sqlCommand = new SqlCommand();
            sqlCommand.Connection = sqlConnection;
            sqlCommand.CommandType = CommandType.StoredProcedure;
            sqlCommand.CommandText = "modificar_Solicitud";
            Logger.fileWrite("Ejecutando Store Procedure [" + sqlCommand.CommandText + "]...", Logger.MessageType.Information);


            SqlParameter parameter = new SqlParameter ("@sIDSOLICITUD", SqlDbType.VarChar);
            parameter.Direction = ParameterDirection.Input;
            parameter.Value = solicitud.requestID;
            sqlCommand.Parameters.Add(parameter);


            parameter = new SqlParameter("@sUSUARIO", SqlDbType.VarChar);
            parameter.Direction = ParameterDirection.Input;
            parameter.Value = solicitud.username;
            sqlCommand.Parameters.Add(parameter);

            parameter = new SqlParameter("@sEMPLEADO", SqlDbType.VarChar);
            parameter.Direction = ParameterDirection.Input;
            parameter.Value = solicitud.employeeID;
            sqlCommand.Parameters.Add(parameter);


            parameter = new SqlParameter("@sTDIASDISPONIBLES", SqlDbType.VarChar);
            parameter.Direction = ParameterDirection.Input;
            parameter.Value = solicitud.diasDisponibles;
            sqlCommand.Parameters.Add(parameter);

            parameter = new SqlParameter("@sTDIASSOLICITADOS", SqlDbType.VarChar);
            parameter.Direction = ParameterDirection.Input;
            parameter.Value = solicitud.diasSolicitados;
            sqlCommand.Parameters.Add(parameter);

            parameter = new SqlParameter("@sFECHA_INICIO", SqlDbType.VarChar);
            parameter.Direction = ParameterDirection.Input;
            parameter.Value = solicitud.fechaInicio;
            sqlCommand.Parameters.Add(parameter);

            parameter = new SqlParameter("@sFECHA_FIN", SqlDbType.VarChar);
            parameter.Direction = ParameterDirection.Input;
            parameter.Value = solicitud.fechaFin;
            sqlCommand.Parameters.Add(parameter);

            parameter = new SqlParameter("@sFECHA_REGISTRO", SqlDbType.VarChar);
            parameter.Direction = ParameterDirection.Input;
            parameter.Value = solicitud.fechaRegistro;
            sqlCommand.Parameters.Add(parameter);

            parameter = new SqlParameter("@sFECHA_ENVIO_WF", SqlDbType.VarChar);
            parameter.Direction = ParameterDirection.Input;
            parameter.Value = solicitud.fechaWFL;
            sqlCommand.Parameters.Add(parameter);

            parameter = new SqlParameter("@sESTADO_SOLICITUD", SqlDbType.VarChar);
            parameter.Direction = ParameterDirection.Input;
            parameter.Value = solicitud.estado;
            sqlCommand.Parameters.Add(parameter);

            parameter = new SqlParameter("@sWORKITEM", SqlDbType.VarChar);
            parameter.Direction = ParameterDirection.Input;
            parameter.Value = solicitud.objectID;
            sqlCommand.Parameters.Add(parameter);

            int resultado = sqlCommand.ExecuteNonQuery();
            CloseConnection();

            if (resultado > 0)
                return true;
            else
                return false;


            
        }
        public static bool deleteSolicitud(String id)
        {

            OpenConnection();
            SqlCommand sqlCommand = new SqlCommand();
            sqlCommand.Connection = sqlConnection;
            sqlCommand.CommandType = CommandType.StoredProcedure;
            sqlCommand.CommandText = "ACTUALIZAR_SOLICITUD";
            Logger.fileWrite("Ejecutando Store Procedure [" + sqlCommand.CommandText + "]...", Logger.MessageType.Information);


            SqlParameter parameter = new SqlParameter("@IDSOLICITUD ", SqlDbType.VarChar);
            parameter.Direction = ParameterDirection.Input;
            parameter.Value = id;
            sqlCommand.Parameters.Add(parameter);

            parameter = new SqlParameter("@sESTADO_SOLICITUD", SqlDbType.VarChar);
            parameter.Direction = ParameterDirection.Input;
            parameter.Value = "B";
            sqlCommand.Parameters.Add(parameter);

            int resultado = sqlCommand.ExecuteNonQuery();
            CloseConnection();

            if (resultado > 0)
                return true;
            else
                return false;

        }
        public static List<Entidades.Solicitud> consultarSolicitud(string campo, string texto,string usuario,string nombre ="") {
            
                OpenConnection();
                SqlCommand sqlCommand = new SqlCommand();
                sqlCommand.Connection = sqlConnection;
                sqlCommand.CommandType = CommandType.StoredProcedure;
                if (nombre.Equals(""))
                    sqlCommand.CommandText = "spVac_ConsultarSolicitud";
                else
                    sqlCommand.CommandText = "spVac_ConsultarSolicitudLikeNombre";

                Logger.fileWrite("Ejecutando Store Procedure [" + sqlCommand.CommandText + "]...", Logger.MessageType.Information);
                SqlParameter parameter = null;
                if (nombre.Equals(""))
                {
                    parameter = new SqlParameter("@sCampo", SqlDbType.VarChar);
                    parameter.Direction = ParameterDirection.Input;
                    parameter.Value = campo;
                    sqlCommand.Parameters.Add(parameter);
                }

                parameter = new SqlParameter("@sValor", SqlDbType.VarChar);
                parameter.Direction = ParameterDirection.Input;
                if (nombre.Equals(""))
                    parameter.Value = texto;
                else
                    parameter.Value = nombre;
                sqlCommand.Parameters.Add(parameter);

                parameter = new SqlParameter("@sUsuario", SqlDbType.VarChar);
                parameter.Direction = ParameterDirection.Input;
                parameter.Value = usuario;
                sqlCommand.Parameters.Add(parameter);

                SqlDataReader reader = sqlCommand.ExecuteReader(); //retorna el resultado del store procedure   

                if (reader.HasRows)
                {

                    List<Entidades.Solicitud> lista = new List<Solicitud>();
                    while (reader.Read())
                    {
                        Entidades.Solicitud solicitud = new Solicitud();

                        solicitud.requestID = reader.GetValue(reader.GetOrdinal("IDSOLICITUD")).ToString();

                        if (solicitud.requestID.ToUpper().Equals("NULL"))
                            solicitud.requestID = "";


                        solicitud.username = reader.GetValue(reader.GetOrdinal("NOMEMPLEADO")).ToString();
                        if (solicitud.username.ToUpper().Equals("NULL"))
                            solicitud.username = "";



                        solicitud.employeeID = reader.GetValue(reader.GetOrdinal("EMPLEADO")).ToString();
                        if (solicitud.employeeID.ToUpper().Equals("NULL"))
                            solicitud.employeeID = "";

                        try
                        {
                            solicitud.diasDisponibles = Convert.ToInt32(reader.GetValue(reader.GetOrdinal("TDIASDISPONIBLES")).ToString());
                        }
                        catch { solicitud.diasDisponibles = 0; }

                        try
                        {
                            solicitud.diasSolicitados = Convert.ToInt32(reader.GetValue(reader.GetOrdinal("TDIASSOLICITADOS")).ToString());
                        }
                        catch { solicitud.diasSolicitados = 0; }

                        try
                        {
                            solicitud.fechaInicio = Convert.ToDateTime(reader.GetValue(reader.GetOrdinal("FECHA_INICIO")).ToString());
                        }
                        catch
                        {
                            solicitud.fechaInicio = DateTime.Now;
                        }

                        try
                        {
                            solicitud.fechaFin = Convert.ToDateTime(reader.GetValue(reader.GetOrdinal("FECHA_FIN")).ToString());
                        }
                        catch
                        {
                            solicitud.fechaFin = DateTime.Now;
                        }

                        try
                        {
                            solicitud.fechaRegistro = Convert.ToDateTime(reader.GetValue(reader.GetOrdinal("FECHA_REGISTRO")).ToString());
                        }
                        catch
                        {
                            solicitud.fechaRegistro = DateTime.Now;
                        }

                        try
                        {
                            solicitud.fechaWFL = Convert.ToDateTime(reader.GetValue(reader.GetOrdinal("FECHA_ENVIO_WF")).ToString());
                        }
                        catch
                        {
                            solicitud.fechaWFL = DateTime.Now;
                        }

                        solicitud.estado = reader.GetValue(reader.GetOrdinal("ESTADO_SOLICITUD")).ToString();
                        if (solicitud.estado.ToUpper().Equals("NULL"))
                            solicitud.estado = "";
                        if (solicitud.estado.ToUpper().Equals("A"))
                            solicitud.estado = "Aprobada";

                        if (solicitud.estado.ToUpper().Equals("P"))
                            solicitud.estado = "Pendiente";

                        if (solicitud.estado.ToUpper().Equals("D"))
                            solicitud.estado = "Denegada";

                        if (solicitud.estado.ToUpper().Equals("R"))
                            solicitud.estado = "Rechazada";

                        if (solicitud.estado.ToUpper().Equals("S"))
                            solicitud.estado = "Salvada";

                        if (solicitud.estado.ToUpper().Equals("C"))
                            solicitud.estado = "Cancelada";

                        if (solicitud.estado.ToUpper().Equals("E"))
                            solicitud.estado = "Expirada";

                        solicitud.objectID = reader.GetValue(reader.GetOrdinal("WORKITEM")).ToString();
                        if (solicitud.objectID.ToUpper().Equals("NULL"))
                            solicitud.objectID = "";

                        lista.Add(solicitud);

                    }
                    CloseConnection();
                    return lista;
                }
                else
                {
                    CloseConnection();
                    return new List<Entidades.Solicitud>();
                }                          
       }
        public static List<Entidades.Solicitud> consultarSolicitud(string cedula) {
         
                OpenConnection();
                SqlCommand sqlCommand = new SqlCommand();
                sqlCommand.Connection = sqlConnection;
                sqlCommand.CommandType = CommandType.StoredProcedure;
                sqlCommand.CommandText = "spVac_consultarVacSolicitudes";

                SqlParameter parameter = new SqlParameter("@idUsuario", SqlDbType.VarChar);
                parameter.Direction = ParameterDirection.Input;
                parameter.Value = cedula;
                sqlCommand.Parameters.Add(parameter);

                Logger.fileWrite("Ejecutando Store Procedure [" + sqlCommand.CommandText + "]...", Logger.MessageType.Information);

                SqlDataReader reader = sqlCommand.ExecuteReader(); //retorna el resultado del store procedure   

                if (reader.HasRows)
                {
                    List<Entidades.Solicitud> lista = new List<Solicitud>();
                    while (reader.Read())
                    {
                        Entidades.Solicitud solicitud = new Solicitud();

                        solicitud.requestID = reader.GetValue(reader.GetOrdinal("IDSOLICITUD")).ToString();

                        if (solicitud.requestID.ToUpper().Equals("NULL"))
                            solicitud.requestID = "";


                        solicitud.username = reader.GetValue(reader.GetOrdinal("NOMEMPLEADO")).ToString();
                        if (solicitud.username.ToUpper().Equals("NULL"))
                            solicitud.username = "";



                        solicitud.employeeID = reader.GetValue(reader.GetOrdinal("EMPLEADO")).ToString();
                        if (solicitud.employeeID.ToUpper().Equals("NULL"))
                            solicitud.employeeID = "";

                        try
                        {
                            solicitud.diasDisponibles = Convert.ToInt32(reader.GetValue(reader.GetOrdinal("TDIASDISPONIBLES")).ToString());
                        }
                        catch { solicitud.diasDisponibles = 0; }

                        try
                        {
                            solicitud.diasSolicitados = Convert.ToInt32(reader.GetValue(reader.GetOrdinal("TDIASSOLICITADOS")).ToString());
                        }
                        catch { solicitud.diasSolicitados = 0; }

                        try
                        {
                            solicitud.fechaInicio = Convert.ToDateTime(reader.GetValue(reader.GetOrdinal("FECHA_INICIO")).ToString());
                        }
                        catch
                        {
                            solicitud.fechaInicio = DateTime.Now;
                        }

                        try
                        {
                            solicitud.fechaFin = Convert.ToDateTime(reader.GetValue(reader.GetOrdinal("FECHA_FIN")).ToString());
                        }
                        catch
                        {
                            solicitud.fechaFin = DateTime.Now;
                        }

                        try
                        {
                            solicitud.fechaRegistro = Convert.ToDateTime(reader.GetValue(reader.GetOrdinal("FECHA_REGISTRO")).ToString());
                        }
                        catch
                        {
                            solicitud.fechaRegistro = DateTime.Now;
                        }

                        try
                        {
                            solicitud.fechaWFL = Convert.ToDateTime(reader.GetValue(reader.GetOrdinal("FECHA_ENVIO_WF")).ToString());
                        }
                        catch
                        {
                            solicitud.fechaWFL = DateTime.Now;
                        }

                        solicitud.estado = reader.GetValue(reader.GetOrdinal("ESTADO_SOLICITUD")).ToString();
                        if (solicitud.estado.ToUpper().Equals("NULL"))
                            solicitud.estado = "";

                        if (solicitud.estado.ToUpper().Equals("A"))
                            solicitud.estado = "Aprobada";

                        if (solicitud.estado.ToUpper().Equals("D"))
                            solicitud.estado = "Denegada";

                        if (solicitud.estado.ToUpper().Equals("R"))
                            solicitud.estado = "Rechazada";

                        if (solicitud.estado.ToUpper().Equals("S"))
                            solicitud.estado = "Salvada";

                        if (solicitud.estado.ToUpper().Equals("C"))
                            solicitud.estado = "Cancelada";

                        if (solicitud.estado.ToUpper().Equals("E"))
                            solicitud.estado = "Expirada";
                        
                        solicitud.objectID = reader.GetValue(reader.GetOrdinal("WORKITEM")).ToString();
                        if (solicitud.objectID.ToUpper().Equals("NULL"))
                            solicitud.objectID = "";

                        lista.Add(solicitud);

                    }
                    CloseConnection();
                    return lista;
                }
                else
                {
                    CloseConnection();
                    return new List<Entidades.Solicitud>();
                }

       
            
        } 

     
        public static List<ICE.Vacations.Entidades.Recurso> buscar(String username)
        {
                OpenConnection();
                SqlCommand sqlCommand = new SqlCommand();
                sqlCommand.Connection = sqlConnection;
                sqlCommand.CommandType = CommandType.StoredProcedure;
                sqlCommand.CommandText = "spVac_SelectRecurso";
                Logger.fileWrite("Ejecutando Store Procedure [" + sqlCommand.CommandText + "]...", Logger.MessageType.Information);

                SqlParameter parameter = new SqlParameter("@COLUMNA", SqlDbType.VarChar);
                parameter.Direction = ParameterDirection.Input;
                parameter.Value = "USUARIO";
                sqlCommand.Parameters.Add(parameter);
                Logger.fileWrite("Valor del parametro [" + parameter.Value + "]...", Logger.MessageType.Information);


                parameter = new SqlParameter("@VALOR", SqlDbType.VarChar);
                parameter.Direction = ParameterDirection.Input;
                parameter.Value = username;
                sqlCommand.Parameters.Add(parameter);
                Logger.fileWrite("Valor del parametro [" + parameter.Value + "]...", Logger.MessageType.Information);

                SqlDataReader reader = sqlCommand.ExecuteReader(); //retorna el resultado del store procedure   

                if (reader.HasRows)
                {
                    List<Entidades.Recurso> lista = new List<Recurso>();
                    while (reader.Read())
                    {
                        Entidades.Recurso recurso = new Recurso();
                        recurso.usuario = reader.GetValue(reader.GetOrdinal("USUARIO")).ToString();

                        if (recurso.usuario.ToUpper().Equals("NULL"))
                            recurso.usuario = "";

                        recurso.cedula = reader.GetValue(reader.GetOrdinal("CEDULA")).ToString();

                        if (recurso.cedula.ToUpper().Equals("NULL"))
                            recurso.cedula = "";


                        recurso.apellido1 = reader.GetValue(reader.GetOrdinal("APELLIDO1")).ToString();

                        if (recurso.apellido1.ToUpper().Equals("NULL"))
                            recurso.apellido1 = "";


                        recurso.apellido2 = reader.GetValue(reader.GetOrdinal("APELLIDO2")).ToString();

                        if (recurso.apellido2.ToUpper().Equals("NULL"))
                            recurso.apellido2 = "";

                        recurso.nombre = reader.GetValue(reader.GetOrdinal("NOMBRE")).ToString();

                        if (recurso.nombre.ToUpper().Equals("NULL"))
                            recurso.nombre = "";

                        recurso.email = reader.GetValue(reader.GetOrdinal("eMAIL")).ToString();

                        if (recurso.email.ToUpper().Equals("NULL"))
                            recurso.email = "";

                        recurso.cod_cf = reader.GetValue(reader.GetOrdinal("COD_CF")).ToString();

                        if (recurso.cod_cf.ToUpper().Equals("NULL"))
                            recurso.cod_cf = "";

                        recurso.cod_direccion = reader.GetValue(reader.GetOrdinal("COD_DIRECCION")).ToString();

                        if (recurso.cod_direccion.ToUpper().Equals("NULL"))
                            recurso.cod_direccion = "";


                        recurso.tipo = reader.GetValue(reader.GetOrdinal("TIPO")).ToString();

                        if (recurso.tipo.ToUpper().Equals("NULL"))
                            recurso.tipo = "";

                        recurso.aprobador1 = reader.GetValue(reader.GetOrdinal("APROBADOR1")).ToString();

                        if (recurso.aprobador1.ToUpper().Equals("NULL"))
                            recurso.aprobador1 = "";

                        recurso.aprobador2 = reader.GetValue(reader.GetOrdinal("APROBADOR2")).ToString();

                        if (recurso.aprobador2.ToUpper().Equals("NULL"))
                            recurso.aprobador2 = "";

                        recurso.aprobador3 = reader.GetValue(reader.GetOrdinal("APROBADOR3")).ToString();

                        if (recurso.aprobador3.ToUpper().Equals("NULL"))
                            recurso.aprobador3 = "";                                                

                        lista.Add(recurso);

                    }
                    CloseConnection();
                    return lista;
                }
                else
                {
                    CloseConnection();
                    return new List<Recurso>();
                }                      
        }


        public static ICE.Vacations.Entidades.Recurso buscar_empleado(String cedula)
        {
            OpenConnection();
            SqlCommand sqlCommand = new SqlCommand();
            sqlCommand.Connection = sqlConnection;
            sqlCommand.CommandType = CommandType.StoredProcedure;
            sqlCommand.CommandText = "spVac_SelectRecurso";
            Logger.fileWrite("Ejecutando Store Procedure [" + sqlCommand.CommandText + "]...", Logger.MessageType.Information);

            SqlParameter parameter = new SqlParameter("@COLUMNA", SqlDbType.VarChar);
            parameter.Direction = ParameterDirection.Input;
            parameter.Value = "CEDULA";
            sqlCommand.Parameters.Add(parameter);
            Logger.fileWrite("Valor del parametro [" + parameter.Value + "]...", Logger.MessageType.Information);


            parameter = new SqlParameter("@VALOR", SqlDbType.VarChar);
            parameter.Direction = ParameterDirection.Input;
            parameter.Value = cedula;
            sqlCommand.Parameters.Add(parameter);
            Logger.fileWrite("Valor del parametro [" + parameter.Value + "]...", Logger.MessageType.Information);

            SqlDataReader reader = sqlCommand.ExecuteReader(); //retorna el resultado del store procedure   

            if (reader.HasRows)
            {
                reader.Read();
                    Entidades.Recurso recurso = new Recurso();
                    recurso.usuario = reader.GetValue(reader.GetOrdinal("USUARIO")).ToString();

                    if (recurso.usuario.ToUpper().Equals("NULL"))
                        recurso.usuario = "";

                    recurso.cedula = reader.GetValue(reader.GetOrdinal("CEDULA")).ToString();

                    if (recurso.cedula.ToUpper().Equals("NULL"))
                        recurso.cedula = "";


                    recurso.apellido1 = reader.GetValue(reader.GetOrdinal("APELLIDO1")).ToString();

                    if (recurso.apellido1.ToUpper().Equals("NULL"))
                        recurso.apellido1 = "";


                    recurso.apellido2 = reader.GetValue(reader.GetOrdinal("APELLIDO2")).ToString();

                    if (recurso.apellido2.ToUpper().Equals("NULL"))
                        recurso.apellido2 = "";

                    recurso.nombre = reader.GetValue(reader.GetOrdinal("NOMBRE")).ToString();

                    if (recurso.nombre.ToUpper().Equals("NULL"))
                        recurso.nombre = "";

                    recurso.email = reader.GetValue(reader.GetOrdinal("eMAIL")).ToString();

                    if (recurso.email.ToUpper().Equals("NULL"))
                        recurso.email = "";

                    recurso.cod_cf = reader.GetValue(reader.GetOrdinal("COD_CF")).ToString();

                    if (recurso.cod_cf.ToUpper().Equals("NULL"))
                        recurso.cod_cf = "";

                    recurso.cod_direccion = reader.GetValue(reader.GetOrdinal("COD_DIRECCION")).ToString();

                    if (recurso.cod_direccion.ToUpper().Equals("NULL"))
                        recurso.cod_direccion = "";


                    recurso.tipo = reader.GetValue(reader.GetOrdinal("TIPO")).ToString();

                    if (recurso.tipo.ToUpper().Equals("NULL"))
                        recurso.tipo = "";

                    recurso.aprobador1 = reader.GetValue(reader.GetOrdinal("APROBADOR1")).ToString();

                    if (recurso.aprobador1.ToUpper().Equals("NULL"))
                        recurso.aprobador1 = "";

                    recurso.aprobador2 = reader.GetValue(reader.GetOrdinal("APROBADOR2")).ToString();

                    if (recurso.aprobador2.ToUpper().Equals("NULL"))
                        recurso.aprobador2 = "";

                    recurso.aprobador3 = reader.GetValue(reader.GetOrdinal("APROBADOR3")).ToString();

                    if (recurso.aprobador3.ToUpper().Equals("NULL"))
                        recurso.aprobador3 = "";

                    return recurso;
            }
            else
            {
                CloseConnection();
                return new Recurso();
            }
        }

        public static List<ICE.Vacations.Entidades.Recurso> buscar()
        {
           
                OpenConnection();
                SqlCommand sqlCommand = new SqlCommand();
                sqlCommand.Connection = sqlConnection;
                sqlCommand.CommandType = CommandType.StoredProcedure;
                sqlCommand.CommandText = "spVac_ListaRecursos";
                Logger.fileWrite("Ejecutando Store Procedure [" + sqlCommand.CommandText + "]...", Logger.MessageType.Information);

                               

                SqlDataReader reader = sqlCommand.ExecuteReader(); //retorna el resultado del store procedure   

                if (reader.HasRows)
                {
                    List<Entidades.Recurso> lista = new List<Recurso>();
                    while (reader.Read())
                    {
                        Entidades.Recurso recurso = new Recurso();
                        recurso.usuario = reader.GetValue(reader.GetOrdinal("USUARIO")).ToString();

                        if (recurso.usuario.ToUpper().Equals("NULL"))
                            recurso.usuario = "";

                        recurso.cedula = reader.GetValue(reader.GetOrdinal("CEDULA")).ToString();

                        if (recurso.cedula.ToUpper().Equals("NULL"))
                            recurso.cedula = "";


                        recurso.apellido1 = reader.GetValue(reader.GetOrdinal("APELLIDO1")).ToString();

                        if (recurso.apellido1.ToUpper().Equals("NULL"))
                            recurso.apellido1 = "";


                        recurso.apellido2 = reader.GetValue(reader.GetOrdinal("APELLIDO2")).ToString();

                        if (recurso.apellido2.ToUpper().Equals("NULL"))
                            recurso.apellido2 = "";

                        recurso.nombre = reader.GetValue(reader.GetOrdinal("NOMBRE")).ToString();

                        if (recurso.nombre.ToUpper().Equals("NULL"))
                            recurso.nombre = "";

                        recurso.email = reader.GetValue(reader.GetOrdinal("eMAIL")).ToString();

                        if (recurso.email.ToUpper().Equals("NULL"))
                            recurso.email = "";

                        recurso.cod_cf = reader.GetValue(reader.GetOrdinal("COD_CF")).ToString();

                        if (recurso.cod_cf.ToUpper().Equals("NULL"))
                            recurso.cod_cf = "";

                        recurso.cod_direccion = reader.GetValue(reader.GetOrdinal("COD_DIRECCION")).ToString();

                        if (recurso.cod_direccion.ToUpper().Equals("NULL"))
                            recurso.cod_direccion = "";


                        recurso.tipo = reader.GetValue(reader.GetOrdinal("TIPO")).ToString();

                        if (recurso.tipo.ToUpper().Equals("NULL"))
                            recurso.tipo = "";

                        recurso.aprobador1 = reader.GetValue(reader.GetOrdinal("APROBADOR1")).ToString();

                        if (recurso.aprobador1.ToUpper().Equals("NULL"))
                            recurso.aprobador1 = "";

                        recurso.aprobador2 = reader.GetValue(reader.GetOrdinal("APROBADOR2")).ToString();

                        if (recurso.aprobador2.ToUpper().Equals("NULL"))
                            recurso.aprobador2 = "";

                        recurso.aprobador3 = reader.GetValue(reader.GetOrdinal("APROBADOR3")).ToString();

                        if (recurso.aprobador3.ToUpper().Equals("NULL"))
                            recurso.aprobador3 = "";

                        lista.Add(recurso);


                    }
                    CloseConnection();
                    return lista;
                }
                else
                {
                    CloseConnection();
                    return new List<Recurso>();
                }
                   
        }

        public static List<ICE.Vacations.Entidades.Recurso> buscar(string campo,string valor)
        {

            OpenConnection();
            SqlCommand sqlCommand = new SqlCommand();
            sqlCommand.Connection = sqlConnection;
            sqlCommand.CommandType = CommandType.StoredProcedure;
            sqlCommand.CommandText = "spVac_BuscarRecursosLike";
            Logger.fileWrite("Ejecutando Store Procedure [" + sqlCommand.CommandText + "]...", Logger.MessageType.Information);
            
            
            SqlParameter parameter = new SqlParameter("@sValor", SqlDbType.VarChar);
            parameter.Direction = ParameterDirection.Input;
            parameter.Value = valor;
            sqlCommand.Parameters.Add(parameter);

            parameter = new SqlParameter("@sCampo", SqlDbType.VarChar);
            parameter.Direction = ParameterDirection.Input;
            parameter.Value = campo;
            sqlCommand.Parameters.Add(parameter);



            SqlDataReader reader = sqlCommand.ExecuteReader(); //retorna el resultado del store procedure   

            if (reader.HasRows)
            {
                List<Entidades.Recurso> lista = new List<Recurso>();
                while (reader.Read())
                {
                    Entidades.Recurso recurso = new Recurso();
                    recurso.usuario = reader.GetValue(reader.GetOrdinal("USUARIO")).ToString();

                    if (recurso.usuario.ToUpper().Equals("NULL"))
                        recurso.usuario = "";

                    recurso.cedula = reader.GetValue(reader.GetOrdinal("CEDULA")).ToString();

                    if (recurso.cedula.ToUpper().Equals("NULL"))
                        recurso.cedula = "";


                    recurso.apellido1 = reader.GetValue(reader.GetOrdinal("APELLIDO1")).ToString();

                    if (recurso.apellido1.ToUpper().Equals("NULL"))
                        recurso.apellido1 = "";


                    recurso.apellido2 = reader.GetValue(reader.GetOrdinal("APELLIDO2")).ToString();

                    if (recurso.apellido2.ToUpper().Equals("NULL"))
                        recurso.apellido2 = "";

                    recurso.nombre = reader.GetValue(reader.GetOrdinal("NOMBRE")).ToString();

                    if (recurso.nombre.ToUpper().Equals("NULL"))
                        recurso.nombre = "";

                    recurso.email = reader.GetValue(reader.GetOrdinal("eMAIL")).ToString();

                    if (recurso.email.ToUpper().Equals("NULL"))
                        recurso.email = "";

                    recurso.cod_cf = reader.GetValue(reader.GetOrdinal("COD_CF")).ToString();

                    if (recurso.cod_cf.ToUpper().Equals("NULL"))
                        recurso.cod_cf = "";

                    recurso.cod_direccion = reader.GetValue(reader.GetOrdinal("COD_DIRECCION")).ToString();

                    if (recurso.cod_direccion.ToUpper().Equals("NULL"))
                        recurso.cod_direccion = "";


                    recurso.tipo = reader.GetValue(reader.GetOrdinal("TIPO")).ToString();

                    if (recurso.tipo.ToUpper().Equals("NULL"))
                        recurso.tipo = "";

                    recurso.aprobador1 = reader.GetValue(reader.GetOrdinal("APROBADOR1")).ToString();

                    if (recurso.aprobador1.ToUpper().Equals("NULL"))
                        recurso.aprobador1 = "";

                    recurso.aprobador2 = reader.GetValue(reader.GetOrdinal("APROBADOR2")).ToString();

                    if (recurso.aprobador2.ToUpper().Equals("NULL"))
                        recurso.aprobador2 = "";

                    recurso.aprobador3 = reader.GetValue(reader.GetOrdinal("APROBADOR3")).ToString();

                    if (recurso.aprobador3.ToUpper().Equals("NULL"))
                        recurso.aprobador3 = "";

                    lista.Add(recurso);

                }
                CloseConnection();
                return lista;
            }
            else
            {
                CloseConnection();
                return new List<Recurso>();
            }

        }



        
    }
}

